package mental_connect.backend.backend_ym.utils;

import mental_connect.backend.backend_ym.entity.AccountInfo;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;

public class SecurityUtils {

    private SecurityUtils() {
        // 防止实例化
    }

    /**
     * 获取当前已登录的用户详情（UserDetails）
     * @return 如果已登录则返回UserDetails对象，否则返回null
     */
    public static UserDetails getCurrentUserDetails() {
        Authentication authentication = getAuthentication();
        if (authentication == null) {
            return null;
        }
        Object principal = authentication.getPrincipal();
        if (principal instanceof UserDetails) {
            return (UserDetails) principal;
        }
        return null;
    }

    /**
     * 获取当前已登录用户的认证信息（Authentication）
     * @return 如果已登录则返回Authentication对象，否则返回null
     */
    public static Authentication getAuthentication() {
        return SecurityContextHolder.getContext().getAuthentication();
    }

    /**
     * 获取当前已登录用户的ID（或其他唯一标识符）
     * 这里假设你的UserDetails实现类有一个getId()方法来获取用户ID
     * @return 如果已登录且UserDetails有ID属性，则返回ID，否则返回null
     */
    public static String getCurrentUserId() {
        UserDetails userDetails = getCurrentUserDetails();
        if (userDetails != null && userDetails instanceof AccountInfo) {
            return ((AccountInfo) userDetails).getId();
        }
        return null;
    }
}
